<template>
	<el-table-column v-bind="$attrs" min-width="120" show-overflow-tooltip>
		<template #default="{ row, column }">
			<!-- 使用 getNestedValue 函数获取嵌套属性的值 -->
			{{ formatNumber(getNestedValue(row, column.property)) }}
		</template>
	</el-table-column>
</template>

<script lang="ts" setup>
import { isNumber } from 'lodash-es';
// 定义组件选项
defineOptions({
	name: 'MkColumnNumber',
});

// 定义组件属性
const props = defineProps({
	isInt: {
		// 是否整型，否则有两位小数
		type: Boolean,
		default: false,
	},
});
// 对数字列进行格式化,区分整形和小数,小数精确到小数后两位
// 用于从嵌套对象中获取属性值的函数
const getNestedValue = (row: any, path: string): any => {
	// 将路径分割为属性名数组
	const keys = path.split('.');
	// 遍历属性名数组，逐步访问对象的嵌套属性
	let result = row;
	for (const key of keys) {
		if (result && result.hasOwnProperty(key)) {
			result = result[key];
		} else {
			return undefined; // 如果路径中的某个属性不存在，则返回 undefined
		}
	}
	return result;
};

// 数字格式化函数
const formatNumber = (value: any): string => {
	// 检查值是否为数字
	if (isNumber(value)) {
		return props.isInt ? value.toString() : value.toFixed(2);
	}
	// 如果值不是数字，返回空字符串或根据需要进行其他处理
	return '';
};


</script>